import random

from django.shortcuts import render

# Create your views here.
from django.views import View

from django_redis import get_redis_connection
from django.http import HttpResponse,JsonResponse

from zmeiduo.utils.libs . captcha.captcha import captcha
from zmeiduo.utils.libs.yuntongxun.ccp_sms import CCP


class ImageCodeView(View):
    def get(self,request,uuid):
        #接受参数
        print(uuid)
        #生成验证码
        text,image=captcha.generate_captcha()
        print(text)
        #链接redis二号库保存
        redis_conn=get_redis_connection('verify_code')
        a=redis_conn.setex('img_%s' % uuid, 300, text)
        print("dada",a)
        # 响应图形验证码: image/jpg
        return HttpResponse(image, content_type='image/jpg')
        #保存和返回验证码


class SMSCodeView(View):
    def get(self,request,mobile):


        #接受参数
        image_code = request.GET.get("image_code")#图形验证码
        uuid = request.GET.get("image_code_id")#唯一编号
        #链接redis
        redis_conn=get_redis_connection('verify_code')
        # 取出定时器
        dingshiq=redis_conn.get('sms_%s' % mobile)
        if  dingshiq:
            return JsonResponse({'errmsg': '定时器没过期'})
        #取出来uudi
        sms=redis_conn.get('img_%s' % uuid)
        #是否过期
        if sms ==None:
            return JsonResponse({"yanzm":"验证码不存在"})
        #转换格式
        sms_code=sms.decode()
        if  image_code.lower() != sms_code.lower():
            #生成6位随机数发送给手机
            return JsonResponse({"oda": "验证码不对"})
        #生成4位数字
        suijisui='%06d' % random.randint(0,9999)
        #redis保存
        redis_conn.setex(mobile,300,suijisui)
        #发送随机数
        # CCP().send_te('测试的手机号码', ['短信验证码', '过期时间'], '模板ID')
        # CCP().send_template_sms(mobile,[suijisui,5],1)

        from celery_tasks.sms.tasks import ccp_send_sms_code
        a=ccp_send_sms_code(mobile,suijisui)
        print(suijisui)
        #设置定时器
        redis_conn.setex('sms_%s' % mobile, 60, 'abc')
        # logger.info(suijisui)
            #保留6为随机数
        # 10. 响应结果
        return JsonResponse({'code': 0,
                                  'errmsg': '发送短信成功'})
        #设置一个定时器  60秒过期  不让频繁发送
